package utils;


import java.awt.List;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URL;
import java.util.LinkedList;


/**
 * La classe FichierTexte définit les méthodes utiles aux
 * fichiers textes
 * @since 1.3
 * @author Stéphane Perrin, François Duhem
 */
 
public class FichierTexte {
  	
  	// attributs
  	// nom du fichier
  	private String nomFich;
  	// attribut d'écriture
  	private PrintWriter historique;
  	// attribut de lecture
  	private BufferedReader lectureAvecBuffer = null;
    
  	// Etat du fichier boolean
  	public boolean Etat = false; // fermé à l'origine
  	
  	
  	/**
 	 * Constructeur de la classe FichierTexte
 	 * @param nom le nom du fichier à créer
 	 */
  	public FichierTexte(String nom){
  		nomFich = nom;
  		
  	}
  	
  	
  	/**
 	 * Méthode InitialiseEcrireDansFichierTexte qui initialise le fichier
 	 * @throws IOException
 	 */
  	public void InitialiseEcrireDansFichierTexte() {
  		try{
  			historique = new PrintWriter(new FileWriter(nomFich));
  			Etat=true;
  		}
  		catch (IOException e) {
			System.out.println("Fichier texte non disponible");	    	
		}
    }
  
  	
  	/**
 	 * Méthode EcrireDansFichierTexte
 	 * @param session
 	 */
  	public void EcrireDansFichierTexte(String session){
  			historique.println(session);
  			
 	}	 
  	
  	/**
	 * Méthode EcrireDansFichierTexte
	 * @param tableau session
	 */
  	public void EcrireDansFichierTexte(String[] session){
  		for (int i=0;i<session.length;i++){
  			historique.println(session[i]);
  		}
  	}
  	
  	/**
 	 * Méthode FermerEcrireDansFichierTexte qui ferme le fichier
 	 */
  	public void FermerEcrireDansFichierTexte(){
  			historique.close();
  			Etat=false;
  		}
  	
  	/**
 	 * Méthode lire qui lit le fichier texte
 	 * @param k 
 	 * @return un String, lu dans le fichier representant la ligne lu
 	 * @throws IOException
 	 */
  	public String lire(int k){
  		return lire().get(k);	
	}
  	  
  	/**
 	 * Méthode lire qui lit le fichier texte
 	 * @param k 
 	 * @return un list de tout ce qui est lu ligne par ligne
 	 * @throws IOException
 	 */
  	public LinkedList<String> lire(){
  		String ligne;
		LinkedList<String> list = new LinkedList<String>();
		
		try	{
			File fichier = new File(nomFich);
			lectureAvecBuffer = new BufferedReader(new FileReader(fichier));
			while((ligne = lectureAvecBuffer.readLine())!=null){
				list.add(ligne);
			}
			lectureAvecBuffer.close();
		}
		catch (IOException IO){
			System.out.println("pas de fichier texte");	    	
		}
	return list;	
	}
	
  	
}  	 